CSSãšã©ãŒåŠçïŒ@errorèŠåãå«ãïŒ ããã¹ããã©ã¯ãã£ã¹ãå ç¢ã§ä¿å®å¯èœãªã¹ã¿ã€ã«ã·ãŒãã®ããã®é«åºŠãªãã¯ããã¯ã解説ãCSSãšã©ãŒã广çã«ç¹å®ãåŠçã鲿¢ããæ¹æ³ãåŠã³ãŸãã
CSSãšã©ãŒèŠåïŒãšã©ãŒåŠçå®è£ ã®å æ¬çãªã¬ã€ã
CSSã¯äžèŠåçŽã«èŠããŸããããŠã§ããµã€ãã®ã¬ã³ããªã³ã°ãšæ©èœã«åœ±é¿ãäžããå¯èœæ§ã®ãããšã©ãŒãçºçãããããã®ã§ãããããã®ãšã©ãŒã¯ãåçŽãªæ§æãã¹ããããã©ãŠã¶ã®äºææ§ãã¹ã¿ã€ã«ã®ç«¶åã«é¢é£ããããè€éãªåé¡ãŸã§å€å²ã«ããããŸããåŸæ¥ãCSSã«ã¯ãããã®ãšã©ãŒãé©åã«åŠçããããã®å
ç¢ãªçµã¿èŸŒã¿ã¡ã«ããºã ããããŸããã§ãããããããCSSã«ããã@errorèŠåã®å°å
¥ã«ãããCSSãšã©ãŒãæ€åºãåŠçãå ±åããããã®åŒ·åãªæ°ããæ¹æ³ãæäŸãããããå埩åããããä¿å®ããããã¹ã¿ã€ã«ã·ãŒãã«ã€ãªãããŸãã
CSSãšã©ãŒåŠçã®å¿ èŠæ§ãçè§£ãã
@errorèŠåã«å
¥ãåã«ãCSSãšã©ãŒåŠçããªãéèŠãªã®ããçè§£ããããšãéèŠã§ããé©åãªãšã©ãŒåŠçããªãå ŽåãCSSãšã©ãŒã¯ä»¥äžã®åå ãšãªãå¯èœæ§ããããŸãã
- äºæããªãã¬ã³ããªã³ã°ïŒã¹ã¿ã€ã«ãæå³ãããšããã«é©çšãããªãå¯èœæ§ããããèŠèŠçãªäžæŽåãã¬ã€ã¢ãŠãã®åŽ©ãã«ã€ãªãããŸãã
- æ©èœã®ç ŽæïŒCSSã®ãšã©ãŒã¯ãç¹ã«JavaScriptãç¹å®ã®CSSã¹ã¿ã€ã«ãŸãã¯ããããã£ã«äŸåããŠããå ŽåãJavaScriptã®æ©èœã«éæ¥çã«åœ±é¿ãäžããããšããããŸãã
- ã¡ã³ããã³ã¹ã®é çã®çš®ïŒCSSãšã©ãŒã®ãããã°ã¯ãç¹ã«å€§èŠæš¡ã§è€éãªã¹ã¿ã€ã«ã·ãŒãã§ã¯æéããããããšããããŸãã
- 貧匱ãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ïŒCSSãšã©ãŒã ããã®ãŠã§ããµã€ãã¯ããŠãŒã¶ãŒã«äžæºã§ãããã§ãã·ã§ãã«ã§ãªããšã¯ã¹ããªãšã³ã¹ãæäŸããå¯èœæ§ããããŸãã
æ±äº¬ã®ããããããŒãCSSãã¡ã€ã«ã§ã¿ã€ããã¹ãããã·ããªãªãèããŠã¿ãŸãããããšã©ãŒåŠçããªãå Žåããã®ãšã©ãŒã¯éçºããã³ãã¹ãäžã«èŠéãããããŠã§ããµã€ããã°ããŒãã«ãªãŠãŒã¶ãŒã«å±éããããšãã«ã®ã¿è¡šé¢åããå¯èœæ§ããããŸããããŸããŸãªå°åã®ãŠãŒã¶ãŒã¯ããã©ãŠã¶ãšããã€ã¹ã«å¿ããŠãç°ãªãèŠèŠçãªäžå ·åãã¬ã€ã¢ãŠãã®åé¡ãçºçããå¯èœæ§ããããŸãã
@errorèŠåã®ç޹ä»
@errorèŠåã¯ãç¹å®ã®CSS宣èšãŸãã¯ã³ãŒããããã¯ããšã©ãŒã«ãªã£ãå Žåã«å®è¡ããããã©ãŒã«ããã¯ã³ãŒããããã¯ãå®çŸ©ã§ããæ¡ä»¶ä»ãat-èŠåã§ããããã¯åºæ¬çã«CSSã®try-catchã¡ã«ããºã ãæäŸããŸãã
@errorèŠåã®æ§æ
@errorèŠåã®åºæ¬çãªæ§æã¯æ¬¡ã®ãšããã§ãã
@error {
/* è©äŸ¡ããCSSã³ãŒã */
} {
/* ãšã©ãŒãçºçããå Žåã«å®è¡ãããã©ãŒã«ããã¯ã³ãŒã */
}
æ§æãåè§£ããŠã¿ãŸãããã
@errorïŒãšã©ãŒåŠçãããã¯ãéå§ããããŒã¯ãŒãã{ /* è©äŸ¡ããCSSã³ãŒã */ }ïŒãã®ãããã¯ã«ã¯ããšã©ãŒãç£èŠããCSSã³ãŒããå«ãŸããŠããŸãã{ /* ãšã©ãŒãçºçããå Žåã«å®è¡ãããã©ãŒã«ããã¯ã³ãŒã */ }ïŒãã®ãããã¯ã«ã¯ãæåã®ãããã¯ã§ãšã©ãŒãçºçããå Žåã«å®è¡ããããã©ãŒã«ããã¯CSSã³ãŒããå«ãŸããŠããŸãã
@errorèŠåã®ä»çµã¿
ãã©ãŠã¶ã@errorèŠåãæ€åºãããšãæåã®ãããã¯å
ã®CSSã³ãŒããå®è¡ããããšããŸããã³ãŒãããšã©ãŒãªãã§æ£åžžã«å®è¡ãããå Žåã2çªç®ã®ãããã¯ã¯ç¡èŠãããŸãããã ããæåã®ãããã¯ã®å®è¡äžã«ãšã©ãŒãçºçããå Žåããã©ãŠã¶ã¯æåã®ãããã¯ã®æ®ãã®ã³ãŒããã¹ããããã2çªç®ã®ãããã¯ã®ãã©ãŒã«ããã¯ã³ãŒããå®è¡ããŸãã
@errorèŠåã®å®éã®äœ¿çšäŸ
@errorèŠåã®èœåã瀺ãããã«ãããã€ãã®å®éã®äŸãèŠãŠã¿ãŸãããã
äŸ1ïŒãã³ããŒãã¬ãã£ãã¯ã¹ãšã©ãŒã®åŠç
ãã³ããŒãã¬ãã£ãã¯ã¹ïŒäŸïŒ-webkit-ã-moz-ã-ms-ïŒã¯ãå®éšçãŸãã¯ãã©ãŠã¶åºæã®CSSæ©èœãæäŸããããã«ãã䜿çšãããŸãããã ãããããã®ãã¬ãã£ãã¯ã¹ã¯å€ããªã£ãããç°ãªããã©ãŠã¶éã§äžè²«æ§ããªããªãå¯èœæ§ããããŸãã@errorèŠåã¯ããã³ããŒãã¬ãã£ãã¯ã¹ããµããŒããããŠããªãç¶æ³ãåŠçããããã«äœ¿çšã§ããŸãã
@error {
.element {
-webkit-transform: rotate(45deg);
transform: rotate(45deg);
}
} {
.element {
/* -webkit-transformããµããŒãããŠããªããã©ãŠã¶ã®ãã©ãŒã«ããã¯ã¹ã¿ã€ã« */
/* ããåçŽãªå€æãŸãã¯ç°ãªãã¢ãããŒãã䜿çšãã */
transform: rotate(0deg); /* å転ããªã»ãã */
/* ãŸãã¯ãŠãŒã¶ãŒã«ã¡ãã»ãŒãžãæäŸããïŒé©åãªå ŽåïŒ */
}
}
ãã®äŸã§ã¯ããã©ãŠã¶ã-webkit-transformããµããŒãããŠããªãå Žåããã©ãŒã«ããã¯ã³ãŒããå®è¡ãããèŠçŽ ã«äœããã®åœ¢ã®å€æãé©çšãããããå°ãªããšãã¬ã€ã¢ãŠãã厩ããªãããã«ããŸããããã¯ãããŸããŸãªãã©ãŠã¶ããŒãžã§ã³ãæã€ã°ããŒãã«ãŠãŒã¶ãŒããŒã¹å
šäœã§ãã¯ãã¹ãã©ãŠã¶äºææ§ã確ä¿ããäžã§ç¹ã«åœ¹ç«ã¡ãŸãã
äŸ2ïŒãµããŒããããŠããªãCSSããããã£ã®åŠç
æ°ããCSSããããã£ãåžžã«å°å
¥ãããŠãããå€ããã©ãŠã¶ã¯ãããããµããŒãããŠããªãå¯èœæ§ããããŸãã@errorèŠåã¯ããµããŒããããŠããªãããããã£ã®ãã©ãŒã«ããã¯ã¹ã¿ã€ã«ãæäŸããããã«äœ¿çšã§ããŸãã
@error {
.element {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
grid-gap: 20px;
}
} {
.element {
/* ã°ãªããã¬ã€ã¢ãŠãããµããŒãããŠããªããã©ãŠã¶ã®ãã©ãŒã«ããã¯ã¹ã¿ã€ã« */
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
.element > * {
width: calc(50% - 10px); /* çŽ2å */
margin-bottom: 20px;
}
}
ããã§ã¯ããã©ãŠã¶ãCSSã°ãªããã¬ã€ã¢ãŠãããµããŒãããŠããªãå Žåããã©ãŒã«ããã¯ã³ãŒãã¯Flexboxã䜿çšããŠåæ§ã®ã¬ã€ã¢ãŠããå®çŸããŸããããã«ãããã³ã³ãã³ãã¯å€ããã©ãŠã¶ã§ãåççãªåœ¢åŒã§è¡šç€ºãããŸããã€ã³ã¿ãŒãããé床ãé ããå€ãããã€ã¹ã䜿çšããŠããå°åã®ãŠãŒã¶ãŒãæ³åããŠã¿ãŠãã ããããã®ã¢ãããŒãã«ãããããã¢ã¯ã»ã¹ãããããšã¯ã¹ããªãšã³ã¹ãæäŸãããŸãã
äŸ3ïŒæ§æãšã©ãŒã®åŠç
åçŽãªæ§æãšã©ãŒãCSSã³ãŒãã«å¿ã³å¯ãããšããããŸãã@errorèŠåã¯ããããã®ãšã©ãŒãé©åã«åŠçããã®ã«åœ¹ç«ã¡ãŸãã
@error {
.element {
color: #ff000; /* æå³çãªæ§æãšã©ãŒïŒç¡å¹ãª16é²ã³ãŒã */
}
} {
.element {
color: #000;
}
}
ãã®å Žåãæå³çãªæ§æãšã©ãŒïŒ#ff000ïŒã¯ãã©ãŒã«ããã¯ã³ãŒããããªã¬ãŒããããã¹ãã®è²ãé»ïŒ#000ïŒã«èšå®ããŸããããã«ãããèŠçŽ ã«è²ããŸã£ããé©çšãããªãå¯èœæ§ãé²ããŸãã
é«åºŠãªãã¯ããã¯ãšãã¹ããã©ã¯ãã£ã¹
@errorèŠåã¯åŒ·åãªããŒã«ã§ããã广çã«äœ¿çšãããã¹ããã©ã¯ãã£ã¹ã«åŸãããšãéèŠã§ãã
1. ç¹å®ã®ãšã©ãŒåŠçã䜿çšãã
ãã¹ãŠã®ãšã©ãŒããã£ãããããåºããã@errorèŠåã®äœ¿çšã¯é¿ããŠãã ããã代ããã«ãç¹å®ã®æœåšçãªãšã©ãŒã·ããªãªãã¿ãŒã²ããã«ããŠã¿ãŠãã ãããããã«ãããæ£åœãªãšã©ãŒããã¹ã¯ããããšãé¿ããã³ãŒãã®ä¿å®æ§ãé«ããããšãã§ããŸãã
2. æå³ã®ãããã©ãŒã«ããã¯ãæäŸãã
ãã©ãŒã«ããã¯ã³ãŒãã¯ããšã©ãŒã®åå ãšãªã£ãã³ãŒãã«ä»£ããåççãªä»£æ¿ææ®µãæäŸããå¿ èŠããããŸãããŠã§ããµã€ãã®æ©èœãšå€èгãå¯èœãªéãç¶æããããšãç®çãšããå¿ èŠããããŸãã
3. ãã©ãŠã¶ã®äºææ§ãèæ ®ãã
@errorèŠåèªäœã¯ããã¹ãŠã®ãã©ãŠã¶ã§ãµããŒããããŠããªãå¯èœæ§ããããŸããç°ãªããã©ãŠã¶ã§ã³ãŒãã培åºçã«ãã¹ãããŠãæåŸ
ã©ããã«åäœããããšã確èªããããšãéèŠã§ãã䜿çšããåã«ãæ©èœã¯ãšãªïŒ@supportsïŒã䜿çšããŠ@errorèŠåã®ãµããŒããæ€åºããããšãæ€èšããŠãã ããã
4. CSSæ€èšŒããŒã«ã䜿çšãã
CSSã³ãŒããå±éããåã«ãCSSæ€èšŒããŒã«ã䜿çšããŠæœåšçãªãšã©ãŒãç¹å®ããŠä¿®æ£ããŸããããã«ããããšã©ãŒãæåã«çºçããã®ãé²ããåºç¯ãªãšã©ãŒåŠçã®å¿ èŠæ§ãæžããããšãã§ããŸãã
5. å ç¢ãªãã¹ãæŠç¥ãå®è£ ãã
ããŸããŸãªãã©ãŠã¶ãããã€ã¹ãç»é¢ãµã€ãºãã«ããŒããå æ¬çãªãã¹ãæŠç¥ãéçºããŸããããã«ãããéçºããã»ã¹ã®æ©ã段éã§CSSãšã©ãŒãç¹å®ããŠä¿®æ£ããããšãã§ããŸãã
6. ãšã©ãŒç£èŠããŒã«ãšçµ±åãã
CSSãšã©ãŒåŠçãããªã¢ã«ã¿ã€ã ã§CSSãšã©ãŒã远跡ããŠå ±åã§ãããšã©ãŒç£èŠããŒã«ãšçµ±åããããšãæ€èšããŠãã ãããããã«ããã倿°ã®ãŠãŒã¶ãŒã«åœ±é¿ãäžããåã«ãåé¡ãè¿ éã«ç¹å®ããŠå¯ŸåŠããããšãã§ããŸãã
7. ã³ãŒãã«ã³ã¡ã³ããã
åŠçããŠããæœåšçãªãšã©ãŒãšãã©ãŒã«ããã¯ã³ãŒãã®ç®çã説æããã³ã¡ã³ãã䜿çšããŠã@errorèŠåãæç¢ºã«ææžåããŸããããã«ãããã³ãŒãã®çè§£ãšä¿å®ã容æã«ãªããŸãã
8. ã¢ã¯ã»ã·ããªãã£ãèæ ®ãã
ãã©ãŒã«ããã¯ã¹ã¿ã€ã«ããé害ãæã€ãŠãŒã¶ãŒã«ãšã£ãŠã¢ã¯ã»ã¹å¯èœã§ããããšã確èªããŠãã ãããããšãã°ããã©ãŒã«ããã¯ã³ãŒãã§ç°ãªãã¬ã€ã¢ãŠãã䜿çšããŠããå Žåã¯ãããŒããŒãã䜿çšããŠããã²ãŒãå¯èœã§ãããååãªè²ã®ã³ã³ãã©ã¹ããæäŸãããŠããããšã確èªããŠãã ããã
@errorèŠåã®ãã©ãŠã¶ãµããŒã
çŸåšã@errorèŠåã¯æ¯èŒçæ°ããæ©èœã§ããããã¹ãŠã®ãã©ãŠã¶ã§å®å
šã«ãµããŒããããŠããªãå¯èœæ§ããããŸãããã®æ©èœã«å€§ããäŸåããåã«ããCan I use...ãã®ãããªãŠã§ããµã€ãã§ãã©ãŠã¶ã®äºææ§ãã£ãŒãã確èªããããšãéèŠã§ãããã©ãŠã¶ã®ãµããŒããéãããŠããå Žåã¯ãæ©èœã¯ãšãªïŒ@supportsïŒãšçµã¿åãããããã°ã¬ãã·ããšã³ãã³ã¹ã¡ã³ãæŠç¥ãäžå¯æ¬ ã§ãããã®ã¢ãããŒãã«ããã@errorèŠåã¯ãµããŒããããŠããå Žæã§ã®ã¿äœ¿çšãããå€ããã©ãŠã¶ã«ã¯ä»£æ¿ãœãªã¥ãŒã·ã§ã³ãæäŸãããŸãã
@supportsãš@errorèŠåãçµã¿åãããæ¹æ³ã®äŸã次ã«ç€ºããŸãã
@supports (at-rule-error: true) { /* @errorãµããŒãã®æ©èœã¯ãšãªïŒ2024幎çŸåšãããã¯ä»®èª¬ã§ãïŒ */
@error {
.element {
property: invalid-value; /* æå³çãªãšã©ãŒ */
}
} {
.element {
/* ãã©ãŒã«ããã¯ã¹ã¿ã€ã« */
}
}
} /* @supportsã倱æããå Žåããããã¯å
šäœãã¹ããããããŸãã */
CSSãšã©ãŒåŠçã®æªæ¥
@errorèŠåã¯ãCSSãšã©ãŒåŠçã«ãããéèŠãªåé²ã衚ããŠããŸãããã©ãŠã¶ãé²åãç¶ããæ°ããæ©èœããµããŒãããã«ã€ããŠãããæŽç·Žããããšã©ãŒåŠçã¡ã«ããºã ãç»å Žããããšãäºæ³ãããŸããå°æ¥ã®éçºã«ã¯ããã詳现ãªãšã©ãŒå ±åããšã©ãŒã®ã¿ã€ãããšã«ç°ãªããã©ãŒã«ããã¯æŠç¥ãæå®ããæ©èœãéçºããŒã«ãšã®ããç·å¯ãªçµ±åãå«ãŸããå¯èœæ§ããããŸãã
èããããå°æ¥ã®æ©èœåŒ·åã®1ã€ã¯ããšã©ãŒãã³ã³ãœãŒã«ã«èšé²ããããåæã®ããã«ãµãŒããŒã«éä¿¡ãããããæ©èœã§ããããã«ãããéçºè ã¯CSSãšã©ãŒããã广çã«è¿œè·¡ããŠä¿®æ£ã§ããŸãã
ãã1ã€ã®æœåšçãªéçºã¯ãCSSã³ãŒããã¹ãããã¹ã«ãŒãããªã¢ã«ã¿ã€ã ã§ãšã©ãŒãç¹å®ã§ããCSSãããã¬ãŒã®å°å ¥ã§ããããã«ãããè€éãªCSSã¹ã¿ã€ã«ã·ãŒãã®ãããã°ããã»ã¹ãå€§å¹ ã«ç°¡çŽ åãããŸãã
çµè«
@errorèŠåã¯ãCSSãšã©ãŒãé©åã«åŠçããã¹ã¿ã€ã«ã·ãŒãã®å
ç¢æ§ãšä¿å®æ§ãåäžãããããã®åŒ·åãªæ°ããæ¹æ³ãæäŸããŸãã@errorèŠåã广çã«äœ¿çšãããã¹ããã©ã¯ãã£ã¹ã«åŸãããšã§ããšã©ãŒã«åŒ·ããã°ããŒãã«ãªãŠãŒã¶ãŒã«åªãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸãããŠã§ããµã€ããäœæã§ããŸãã
@errorèŠåã¯äžèœè¬ã§ã¯ãããŸããããããå
ç¢ã§ä¿å®å¯èœãªCSSã³ãŒããäœæããã®ã«åœ¹ç«ã€è²ŽéãªããŒã«ã§ãã@errorèŠåããCSSæ€èšŒããã¹ãããšã©ãŒç£èŠãªã©ã®ä»ã®ãšã©ãŒé²æ¢ããã³åŠçææ³ãšçµã¿åãããããšã§ããŠã§ããµã€ãã«å¯ŸããCSSãšã©ãŒã®åœ±é¿ãæå°éã«æãããã¹ãŠã®äººã«ããžãã£ããªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãä¿èšŒã§ããŸãã
CSSã³ãŒããæåŸ ã©ããã«åäœãããã©ãŒã«ããã¯ã¹ã¿ã€ã«ãæå¹ã§ããããšã確èªããããã«ãç°ãªããã©ãŠã¶ããã³ããã€ã¹ã§CSSã³ãŒããåžžã«åŸ¹åºçã«ãã¹ãããããšãå¿ããªãã§ãã ãããCSSãšã©ãŒåŠçã«ç©æ¥µçã«åãçµãããšã§ãããä¿¡é Œæ§ãé«ããä¿å®ããããããŠãŒã¶ãŒãã¬ã³ããªãŒãªãŠã§ããµã€ããäœæã§ããŸãã